package com.xt.purchasingsystem.mapper;

import com.xt.purchasingsystem.model.DModuleDetails;
import com.xt.purchasingsystem.vo.DModuleDetailsVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DModuleDetailsMapper {
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加产品物料组成明细的方法
     * @param record
     * @return
     */
    int insert(DModuleDetails record);

    /**
     * 根据物料设计单号查询此设计单所需的所以物料
     * @return
     */
    List<DModuleDetails> queryAllDModuleDetailsByDModuleId(Integer dModuleId);


    int rowCountByByProductId(String productId);
    /**
     * 根据产品编号分页查询此产品所需物料的接口
     * @param productId
     * @return
     */
    List<DModuleDetailsVo> queryAllDModuleDetailsByProductId(@Param("productId") String productId, @Param("currNo") Integer currNo, @Param("pageSize") Integer pageSize);

    /**
     * 根据产品编号查询此产品所需物料的接口
     * @param productId
     * @return
     */
    List<DModuleDetails> queryAllByProductId(String productId);

    /**
     * 根据编号减少物料可用数量
     * @param id
     * @param amount
     * @return
     */
    int reduceResidualAmount(@Param("id") Integer id, @Param("amount") Integer amount);

    /**
     * 根据编号增加物料可用数量
     * @param id
     * @param amount
     * @return
     */
    int saveResidualAmount(@Param("id") Integer id, @Param("amount") Integer amount);


    int insertSelective(DModuleDetails record);

    DModuleDetails selectByPrimaryKey(Integer id);

    /**
     * 根据编号修改此条产品物料组成明细信息 (字段不为空和!='' 时修改)
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(DModuleDetails record);

    int updateByPrimaryKey(DModuleDetails record);
}